<?php namespace Common\Model; 

use Hdphp\Model\Model;

//前台用户控制器
class User extends Model{

	// 指定表名
	protected $table='user';
	// 自动验证
	protected $validate=array(
		// 用户名
		array('username','required','用户名不能为空',1,3),
		// 用户名已存在
		// array('username','unique','用户名已存在',1,3),
		// 手机号码
		array('phone','required','手机号码不能为空',1,3),
		array('phone','phone','手机格式不正确',1,3),
		
		// 邮箱
		array('email','required','邮箱不能为空',1,3),
		array('email','email','邮箱格式不正确',1,3),
		// 密码
		array('password','required','密码不能为空',1,3),
		array('password','minlen:6','密码不能少于6位',1,3),
		array('password','maxlen:20','密码不能超过20位',1,3),
		// 确认密码
		array('cpassword','required','确认密码不能为空',1,3),
		array('cpassword','confirm:password','两次输入的密码不一致',1,3),
		//新密码
		array('newpassword','required','请输入新密码',1,3),
		array('newpassword','minlen:6','新密码不能少于6位',1,3),
		array('newpassword','maxlen:20','新密码不能超过20位',1,3),
		
		array('nickname','required','请输入用户昵称',1,3),
		);
		


	// 添加方法
	public function store(){
		//使用框架的create()方法触发自动验证
		if(!$this->create()) return false;
		// 获取用户名
    	$username=Q('post.username');
    	// 查询数据库
    	$userdata=$this->where("username='{$username}'")->find();
    	if($userdata){
    		$this->error="用户名已存在";
    		return false;
    	}
    	// 获取手机号码
    	$phone=Q('post.phone');
    	if($phone==$userdata['phone']){
    		$this->error="手机已存在";
    		return false;
    	}
    	// 邮箱
    	$email=Q('post.email');
    	if($email==$userdata['email']){
    		$this->error="邮箱已存在";
    		return false;
    	}
    	// 获取密码
    	$password=Q('post.password');
    	$cpassword=Q('post.cpassword');
    	// 判断两次密码是否一致【那就将密码加密】
    	if($password != $cpassword){
    		$this->error="两次输入的密码不一致";
    		return false;
    		// 将密码加密
    	}
    	// 获取密码
    	$password=$this->encrypt($username,$password);
    	$cpassword=$this->encrypt($username,$cpassword);
		// 否则将数据添加到数据库
		$this->add(array('username'=>$username,'phone'=>$phone,'email'=>$email,'password'=>$password));
		return true;
		
	}
	
	//判断是否登陆
	public function IsLogin(){
		
		// 获取用户提交的用户名
    	    $username=Q('post.username');
    	    //密码
    		$password=Q('post.password');
    		// // 将用户提交的验证码转换为大写【因为框架的验证码为大写】
    		$code=strtoupper(Q('post.code'));
    		
    		
        // 判断验证码是否正确
    	if($code!=$_SESSION['code']){
    		$this->error='验证码错误';
    		return false;
    	}
    	
    	// 查询数据库
    	$userdata=$this->where("username='{$username}'")->find();
    	// sp($userdata);
    	// exit;
    	if(!$userdata){
    		$this->error='用户名不存在';
    		return false;
    	}
    	// 如果用户名存在那就判断密码时候正确
    	// 将密码加密后与数据库的密码进行比对
    	$password=$this->encrypt($username,$password);

    	if($password!=$userdata['password']){
    		$this->error="密码错误";
    		return false;
    	}

    	// 如果用户选择了2周自动登录那就将session延长至2周以后
    	// 接收post提交2周内免登陆
    	$auto=Q('post.auto');
    	if(isset($auto)){
    		setcookie('cook',session_id(),time()+3600*24*14,'/');
    	}
    	// 将用户名和uid存到session中
    	$_SESSION['username']=$userdata['username'];
    	$_SESSION['uid']=$userdata['uid'];
    	return true;

	}

	// 加密方法
	public function encrypt($username,$password){
		return md5(md5($username).md5($password)."houdunwang");
	}
	
		//修改
	public function edit(){
		if(!$this->create()) return false;
		//获取用户名
//		sp($_POST);die;
		$uid=$_SESSION['uid'];
//		sp($uid);die;
		$data=array(
			'nickname'=>Q('post.nickname'),
			'sex'=>Q('post.sex'),
			'email'=>Q('post.email'),
			'avatar'=>Q('post.avatar'),
		);
//		sp($data);die;
		$this->where("uid=$uid")->save($data);
		return true;
	}
	
	
}
